package 集合;

/*
* 泛型 将对象进行参数化
* */
public class TestDemo3 {
    public static void main(String[] args) {
        TestDemo3Student<String> ts
                = new TestDemo3Student<>(new Object[]{new Object()});
        ts.set(0,"hello");

        System.out.println(ts.getObj(0).toString());

    }
}

/*
* <T>:代表当前类是个泛型类
* <> 中的字母可以随意
* <> 中只能是引用类型,不能是基本类型,因此引出了包装类
* 如果<> 中没有任何类型,代表是裸类型,为了兼容老版本而存在
* */
class TestDemo3Student<T>{
    String name;
    int age;

    Object[] obj = new Object[10];

    public TestDemo3Student(Object[] obj) {
        this.obj = obj;
    }

    public void set(int index ,T value){
        obj[index] = value;
    }

    public T getObj(int index){
        return (T)obj[index];
    }
}

/*
* 擦除机制: 在编译期间将所有的T替换成Object的机制,叫做擦除机制
*
* */